﻿using System;
using System.Windows.Forms;
using ProyectoActivos.Const;
using ProyectoActivos.Daos;
using ProyectoActivos.Validate;
using EntitiesAndMappings.Entities;

namespace ProyectoActivos.Forms.Mantenimiento
{
    public partial class FrmActualizarProveedor : Form,IValidateForm
    {
        public Boolean CerroSinAccion { get; set; }

        private Proveedor proveedor;

        private Boolean _valido;

        public FrmActualizarProveedor(Proveedor proveedor)
        {
            CerroSinAccion = false;
            InitializeComponent();
            _valido = true;
            this.proveedor = proveedor;
        }

        private void btnAceptar_Click(object sender, EventArgs e)
        {
            _valido = true;
            errorProvider.Clear();
            FormsAssert.AssertTextBoxNotEmptyAndSize(txtNumeroRuc,15,errorProvider,this);
            FormsAssert.AssertTextBoxNotEmptyAndSize(txtRazonSocial,100,errorProvider,this);
            if (!string.IsNullOrEmpty(txtEmail.Text.Trim()))
            {
                FormsAssert.AssertTextBoxEmail(txtEmail,errorProvider,this);
            }
            ActionExecutor.Execute(this, delegate
            {
                proveedor.Contacto = txtContacto.Text.Trim() ;
                proveedor.Direccion = txtDireccion.Text.Trim();
                proveedor.Email = txtEmail.Text ;
                proveedor.Fax = txtFax.Text.Trim();
                proveedor.Ruc = txtNumeroRuc.Text ;
                proveedor.RazonSocial = txtRazonSocial.Text ;
                proveedor.Telefono = txtTelefono.Text.Trim();
                proveedor.Estado = Estado.Activo;
                var proveedorDao = new ProveedorDAO();
                proveedor = proveedor.Id == 0 ? proveedorDao.Insert(proveedor) : proveedorDao.Update(proveedor);
                Close();
            });
        }
        
        private void FrmActualizarTrabajador_Load(object sender, EventArgs e)
        {
            _valido = true;
            txtContacto.Text = proveedor.Contacto;
            txtDireccion.Text = proveedor.Direccion;
            txtEmail.Text = proveedor.Email;
            txtFax.Text = proveedor.Fax;
            txtNumeroRuc.Text = proveedor.Ruc;
            txtRazonSocial.Text = proveedor.RazonSocial;
            txtTelefono.Text = proveedor.Telefono;
        }

        public void Invalid()
        {
            _valido = false;
        }

        public Boolean IsValid()
        {
            return _valido;
        }

        private void FrmActualizarTrabajador_FormClosing(object sender, FormClosingEventArgs e)
        {
            CerroSinAccion = (proveedor.Id==0);
        }
    }
}
